/**
 * 状态指示器组件演示页面
 */
const { createStoreBindings } = require('../../../../../framework/mobx/mobx_wx.js');
const { uiStore } = require('../../../../../store/global/ui.js');
const { errorHandler } = require('../../../../../store/global/error_handler.js');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // UI状态
    demoType: 'loading',
    customText: '',
    
    // 演示数据
    demoList: [],
    isLoading: false
  },
  
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 创建MobX绑定
    this.storeBindings = createStoreBindings(this, {
      store: uiStore,
      fields: ['isLoading', 'errors'],
      actions: ['setLoading', 'setError', 'clearError', 'showSuccess', 'showError']
    });
  },
  
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    // 销毁MobX绑定
    this.storeBindings.destroyStoreBindings();
  },
  
  /**
   * 演示加载状态
   */
  showLoading() {
    this.setData({ demoType: 'loading' });
    this.setLoading('demo', true);
    
    // 3秒后自动清除
    setTimeout(() => {
      this.setLoading('demo', false);
      this.showSuccess('加载完成');
    }, 3000);
  },
  
  /**
   * 演示错误状态
   */
  showError() {
    this.setData({ demoType: 'error' });
    this.setError('demo', { message: '加载失败，请重试' });
  },
  
  /**
   * 演示空状态
   */
  showEmpty() {
    this.setData({ demoType: 'empty' });
  },
  
  /**
   * 演示网络错误状态
   */
  showNetwork() {
    this.setData({ demoType: 'network' });
  },
  
  /**
   * 演示自定义状态
   */
  showCustom() {
    this.setData({ 
      demoType: 'custom',
      customText: '自定义状态信息'
    });
  },
  
  /**
   * 清除状态
   */
  clearStatus() {
    this.setData({ demoType: '' });
    this.clearError('demo');
    this.setLoading('demo', false);
  },
  
  /**
   * 处理重试事件
   */
  onRetry() {
    this.showSuccess('正在重试...');
    
    // 模拟重试
    setTimeout(() => {
      this.clearStatus();
    }, 1500);
  }
}); 